package com.itheima.demo1;

public class Demo {
    /*
    接口的核心奥义:
        1. 定制规则         -- 至关重要方法的声明! 类实现接口,必须重写接口中的抽象方法
        2. 充分保留扩展     -- 不给出方法的实现, 由不同的实现类去给出不同的实现

            接口中所有方法都是抽象方法   -- JDK7及以前(主流)
            当我们在接口定义一个方法时,默认JVM会在方法的返回值前补齐 public abstract
            接口中的方法权限必须是 public!!!
 */
    public static void main(String[] args) {
        Person person = new Person();
        person.swimming();
        Dog dog = new Dog();
        dog.swimming();
    }
}
/*
    类中方法: 先天行为描述!一类事物共有的行为!与生俱来的功能
    接口方法: 后天行为描述
 */
class Person implements Swim {
    public void eat() {
    }
    public void sleep() {
    }

    public void swimming() {
        System.out.println("人会仰泳");
    }
}

class Dog implements Swim {
    public void eat() {
    }

    public void sleep() {
    }

    public void swimming() {
        System.out.println("狗会狗刨");
    }
}

//定义一个接口
interface Swim {
    /*
    接口不能创建对象
    创建接口的实现类对象使用
    接口中所有方法都是抽象方法   -- JDK7及以前(主流)
            当我们在接口定义一个方法时,默认JVM会在方法的返回值钱补齐 public abstract
            接口中的方法权限必须是 public!!!
     */
    public void eat();
    public void sleep();
    public abstract void swimming();
}

